package com.hr.尚学堂.线性表;

import java.util.Arrays;

/**
 * 数组的反转
 * 例如：数组{11, 22, 33, 44, 55, 66}反转后为{66, 55, 44, 33, 22, 11}
 * @author zhz
 * @date 2020/10/03
 **/
public class 数组的反转 {
    /**
     *  方法一：
     *      1）新建数组，用于保存反转后的结果
     *      2）把需要反转数组中的元素倒序存入新数组中
     */
    public static int[] reverseOrderArray(int[] arr){
        // 1.定义一个新数组，用于保存反转之后的结果
        int[] temp=new int[arr.length];
        // 2.把arr数组中的所有元素倒序的存入temp数组中
        // 2.1通过循环获得arr数组中的每一个元素
        for (int i = arr.length-1; i >= 0; i--) {
            // 2.2把arr数组中的元素倒序存入temp数组中
            temp[arr.length-1-i]=arr[i];
        }
        // 3.把反转之后的数组返回
        return temp;
    }
    /**
     *  方法二：把需要反转数组的元素首尾交换即可
     */
    public static void reverseOrderArray1(int[] arr){
        // 1.通过循环，获得数组前半部分的元素
        for (int i = 0; i <arr.length/2; i++) {
            // 2.把arr[i]和arr[arr.length - 1 - i]做交换
            int temp=arr[i];
            arr[i]=arr[arr.length-1-i];
            arr[arr.length-1-i]=temp;
        }
    }

    public static void main(String[] args) {
        int[] arr={11,22,33,44,55,66};
        //System.out.println(Arrays.toString(数组的反转.reverseOrderArray(arr)));
        数组的反转.reverseOrderArray1(arr);
        System.out.println(Arrays.toString(arr));
    }
}
